<?php
//error_reporting(E_ALL);
//ini_set('display_errors','On');

class Admin_CodigoController extends Zend_Controller_Action {
    
    private $_usuarioDao;
    private $_codigoDao;

    public function init() {
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            if (!empty($auth->getIdentity()->id)) {
                $usuarioDao = new Doctrine_Model_UsuariosDoctrineDao();
                $this->view->usuario = $usuarioDao->obtenerPorId($auth->getIdentity()->id);
            }
        } else {
            $this->_helper->redirector('index', 'login', 'admin');
        }
        
        $this->_codigoDao = new Doctrine_Model_CodigoDao();
        $this->_usuarioDao = new Doctrine_Model_UsuarioDoctrineDao();
        $this->_helper->layout()->setLayout("layout_admin");
        $this->_flashMessenger = $this->_helper->getHelper('Mensaje');        

    }
    
    public function preDispatch() {
        $sessionCodSeguridad = new Zend_Session_Namespace("codigo_seguridad");
        
        if ($this->_hasParam("redireccionar")) {
            $this->_forward($sessionCodSeguridad->accion, $sessionCodSeguridad->controlador, $sessionCodSeguridad->modulo, $sessionCodSeguridad->params);
        }

    }

    public function indexAction() {
 
    }

    public function registrarAction() {
        
        if ($this->getRequest()->isPost()) {
            $usuario_id = $this->getRequest()->getParam("usuario", null);
            $permiso = $this->getRequest()->getParam("permiso", null);
            
            $codigo = new Doctrine_Model_Entities_Codigo();
            $codigo->setCodigo(rand(10000, 99999));
            $codigo->setPermiso($permiso);
            $codigo->setFecha(new DateTime());
            $codigo->setUsuario($this->_usuarioDao->obtenerPorId($usuario_id));
            $codigo->setActivo(1);
            
            if ($this->_codigoDao->guardar($codigo)) {
                $this->_flashMessenger->addSuccess("Codigo generado <b>({$codigo->getCodigo()})</b> con éxito.");
            } else {
                $this->_flashMessenger->addError("Error al generar el codigo.");
            }
            
        }
        
        $usuarios = $this->_usuarioDao->obtenerTodos();
        $codigos = $this->_codigoDao->obtenerTodos();
        
        $this->view->codigosacceso = array();
        $this->view->usuarios = $usuarios;
        $this->view->codigosacceso = array_reverse($codigos);
        
        $this->view->mensaje = $this->_flashMessenger->getCurrentMessages();
    }

    public function borrarAction() {
        $this->_codigoDao = new Doctrine_Model_CodigoDao();
        
        $codigo_id = $this->getRequest()->getParam("id", null);
        if ($codigo_id) {
            $unCodigo = new Doctrine_Model_Entities_Codigo();
            $unCodigo = $this->_codigoDao->obtenerPorId($codigo_id);
            if ($unCodigo) {
                if ($this->_codigoDao->eliminar($unCodigo)) {
                    $this->_flashMessenger->addSuccess("Codigo eliminado exitosamente.");
                } else {
                    $this->_flashMessenger->addError("Error al intentar eliminar el codigo.");
                }
            } else {
                $this->_flashMessenger->addError("Error al intentar eliminar el codigo. (Codigo inexistente)");
            }
        }
        
        $usuarios = $this->_usuarioDao->obtenerTodos();
        $codigos = $this->_codigoDao->obtenerTodos();
        
        $this->view->codigosacceso = array();
        $this->view->usuarios = $usuarios;
        $this->view->codigosacceso = array_reverse($codigos);
        
        $this->view->mensaje = $this->_flashMessenger->getCurrentMessages();
        
        $this->render("registrar");
    }
    
    public function codigoseguridadAction() {
        $sessionCodSeguridad = new Zend_Session_Namespace("codigo_seguridad");       
        
        $this->view->url = $this->view->baseUrl("admin/codigo/validarcodigoacceso");
        $this->view->method = "post";
    }
    
    public function validarcodigoaccesoAction() {
        //$this->_helper->layout->disableLayout();
        //$this->_helper->viewRenderer->setNoRender();
        $sessionCodSeguridad = new Zend_Session_Namespace("codigo_seguridad");
        
        $usuario = new Doctrine_Model_Entities_Usuario();
        $usuario = $this->view->usuario;
        
        $url = $this->view->baseUrl("admin/codigo/validarcodigoacceso");
        $method = "post";
        $codigo_validado = false;
        
        $mensaje = "";
        $codigo_acceso = $this->getRequest()->getParam("codigo_acceso", null);
        
        if ($codigo_acceso) {
            $unCodigo = new Doctrine_Model_Entities_Codigo();
            $unCodigo = $this->_codigoDao->obtenerPorCodigo($codigo_acceso);

            if ($unCodigo) {
                if ($unCodigo->getUsuario()->getId() == $usuario->getId()) {
                    if ($unCodigo->getActivo() == 1) {
                        $unCodigo->setActivo(2);
                        if ($this->_codigoDao->guardar($unCodigo)) {
                            $sessionCodSeguridad->codigo = $unCodigo->getCodigo();
                            //$url = $sessionCodSeguridad->url;
                            //$method = $sessionCodSeguridad->isPost ? "post" : "get";
                            $codigo_validado = true;
                        }
                    } else {
                        $mensaje = "Codigo erroneo, o codigo utilizado.";
                    }
                } else {
                    $mensaje = "Usuario inhabilitado.";
                }
            } else {
                $mensaje = "Codigo erroneo.";
            }
        }       
        
        $this->view->url = $url;
        $this->view->method = $method;
        $this->view->codigo_validado = $codigo_validado;
        $this->view->mensaje = $mensaje;
        
        $this->render("codigoseguridad");
        //echo json_encode(array("valido" => $valido, "mensaje" => $mensaje));
        
    }

}

